#include<bits/stdc++.h>
using namespace std;
const int N=501;
const int M=100001;
const int dx[]={0,0,1,-1};
const int dy[]={1,-1,0,0};

int n,m,a,b;
int arr[N][N];
bool visit[N][N];

int main()
{
	int x1[M];
	int y1[M];
	scanf("%d%d%d%d",&n,&m,&a,&b);
	memset(visit,0,sizeof(visit));
	queue<int> que;
	int x,y;
	for(int i=0;i<a;i++)
	{
		scanf("%d%d",&x,&y);
		visit[x][y]=true;
		que.push(x);que.push(y);
		arr[x][y]=0;
	}
	for(int i=0;i<b;i++)
	{
		scanf("%d%d",&x,&y);
		x1[i]=x;y1[i]=y;
	}
	int c=1;
	while(!que.empty())
	{
		int size=que.size();
		for(int j=0;j<size/2;j++)
		{
			int x0=que.front();
			que.pop();
			int y0=que.front();
			que.pop();
			for(int k=0;k<4;k++)
			{
				x=x0+dx[k];
				y=y0+dy[k];
				if(x<=0||x>n) continue;
				if(y<=0||y>m) continue;
				if(visit[x][y]) continue;
				que.push(x);
				que.push(y);
				arr[x][y]=c;
				visit[x][y]=true;
			}
		}
		c++;
	}
	for(int i=0;i<b;i++)
	{
		int r=x1[i],c=y1[i];
		printf("%d\n",arr[r][c]);
	}
	return 0;
} 
